EFSでコマンドラインからファイルの作成ができない場合の対処法

EFSでコマンドラインからファイルの作成ができない場合の対処法

Clock Icon2024.08.21

はじめに

かつまたです。以下ブログ内で複数AZに配置したEC2にEFSをマウントし、EFS上でファイル作成を実施したところ、
touch 'efs/testfile': Permission deniedと権限エラーによりファイル作成が行えない状況が発生しました。その際の私の解決法を記述していきたいと思います。

https://dev.classmethod.jp/articles/efs-multiAZ-ec2-KS/

前提条件

・VPC等とEC2作成済み
・EFS作成とSSHからEC2への接続済み
・SSH上でNFSクライアントのインストールとマウントポイント作成済み
・EFSマウントヘルパーを使用し、EFSをマウント済み

マウントポイント確認

まずEFSが正しくマウントされているかを確認します。

bash例
df -h | grep efs

このコマンドの出力にEFSのマウントポイントが正しく表示されていれば、マウントを確認できています。

出力例
fs-0d5364891d7ce80d2.efs.ap-northeast-1.amazonaws.com:/ 8.0E 0 8.0E 0% /home/ec2-user/efs

マウントポイントが表示されない場合、コンソールの「EFS」→作成したEFSを選択→「アタッチ」の「EFSマウントヘルパーの使用」からコマンドを確認し、マウントを行います。

bash例
sudo mount -t efs -o tls fs-0d5364891d7ce80d2:/ efs

EFSマウント方法

ディレクトリの権限の確認

マウントポイントが正常に確認できたが、引き続きファイル作成ができない場合、EFSのマウントポイントの所有者と権限を確認します。

bash例
ls -ld /efs

このコマンド実行の際、私の環境ではマウントポイントの所有者がrootでありec2-userには書き込み権限がないことが判明しました。

出力
drwxr-xr-x. 2 root root 6144 Aug 13 05:18 /home/ec2-user/efs

したがって、EFSのマウントポイントの所有者をec2-userに変更します。

bash例
sudo chown ec2-user:ec2-user /home/ec2-user/efs

実行後、再度権限の確認を行い、マウントポイントの所有者がec2-userであることを確認します。

bash例
ls -ld /home/ec2-user/efs

https://docs.aws.amazon.com/ja_jp/efs/latest/ug/accessing-fs-nfs-permissions.html

ファイル作成確認

上記実施後、再びファイル作成を実施し、私の環境ではファイル作成と、別AZのEC2からのEFSファイルの共有を確認することができました。

bash例
# ファイル作成
touch /home/ec2-user/efs/testfile
# 確認
ls -l /home/ec2-user/efs

まとめ

私の環境では、マウントポイントが正しく設定されているかの確認と、マウントポイントの所有者と権限の確認をおこない、修正することでファイル作成を実行することができました。
どなたかの助けになれたら嬉しいです!
ご覧いただきありがとうございました。

アノテーション株式会社について

アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.